5.03. Библиотеки и утилиты
Популярные библиотеки для разных задач
- Работа с JSON - Jackson, Gson, JSON-P (javax.json).
- ORM (Работа с базами данных) - Hibernate, JPA (Java Persistence API), MyBatis, Spring Data JPA, PostgreSQL JDBC Driver, MySQL Connector/J.
- Логирование - SLF4J (Simple Logging Facade for Java), Logback, Log4j 2, java.util.logging.
- API и HTTP-клиенты - OkHttp, Apache HttpClient, Retrofit, Spring WebClient, RestTemplate.
- Маппинг объектов - MapStruct, ModelMapper.
- Кэширование - Ehcache, Caffeine, Spring Cache.
- Обработка временных ошибок - Resilience4j, Hystrix.
- Аутентификация и авторизация - Spring Security, Keycloak, JWT (io.jsonwebtoken).
- Генервация документации API - Swagger/OpenAPI (springdoc-openapi), Swagger-Core.
- Тестирование - JUnit 5, TestNG, Mockito, AssertJ, Spring Test.
- Обработка файлов - Apache Commons CSV, Apache POI, Thumbnailator, iText.
- Работа с очередями и сообщениями - RabbitMQ Java Client, Spring AMQP, Kafka Clients.
- Работа с электронной почтой - JavaMail API, Spring Mail.
- Шифрование и безопасность - BouncyCastle, javax.crypto.
- Работа с фоновыми задачами - Quartz Scheduler, Spring Batch.
- Работа с WebSocket - javax.websocket, Spring WebSocket.
- Работа с HTML и парсинг - Jsoup, HtmlUnit.
- Микросервисы - Spring Cloud, Netflix Eureka, Consul.
- Работа с графами - GraphQL Java, DGS Framework.
- Работа с конфигурацией - Spring Boot Configuration, Typesafe Config.
- Работа с датами и временем - java.time, Joda-Time.
- Работа с командной строкой - Apache Commons CLI, Picocli.
Популярные фреймворки и утилиты
+
jcmd, mat, jmc, jvisualvm, asyncprofiler,
Performance инженер на хайлоаде
jfr
Утилиты
★ Утилиты JDK – инструменты при диагностике, отладке и запуске приложений. Эти утилиты входят в состав JDK и обычно находятся в папке bin внутри установленного JDK.
- javac – компилятор Java, который компилирует .java файлы в байт-код (.class). Пример:
javac HelloWorld.java
Используется при написании программ без IDE (да, и такое бывает), в скриптах сборки или для изучения основ.
- java – запуск Java-приложений, который запускает класс с методом main. Пример:
java HelloWorld
- jar – работа с JAR-файлами, создание, просмотр, обновление и запуск .jar-файлов.
Пример создания JAR:
jar cfe myapp.jar MainClass *.class
Пример запуска JAR:
java -jar myapp.jar
Используется для распространения приложений, хранения библиотек, упаковки ресурсов.
- jps – просмотр запущенных Java-процессов, показывает список активных Java-процессов и их ID.
Пример:
jps -l
- jstack – анализ стека потоков, выводит трассировку стека всех потоков указанного Java-процесса.
Пример:
jstack 12345 > thread_dump.txt
Используется для анализа deadlocks, при зависании приложения, для диагностики состояния потоков.
- jinfo – получение информации о JVM, показывает конфигурационные параметры и системные свойства запущенного процесса.
Пример:
jinfo 12345
Можно получить системные свойства (System.getProperties()), переменные окружения, аргументы запуска JVM.
- jshell – интерактивная среда выполнения Java-кода, оболочка для тестирования кода без необходимости компилировать классы. Пример:
jshell
jshell> int x = 10;
jshell> System.out.println(x * 2);
Используется при обучении, для быстрого прототипирования, для проверки алгоритмов или выражений.
- javap – дизассемблер Java-классов, позволяет посмотреть содержимое .class файла – сигнатуры методов, байт-код и т.д.
Пример:
javap -c HelloWorld.class
Используется при изучении байт-кода, для анализа сторонних библиотек, при исследовании проблем производительности.
- jcmd – универсальный инструмент управления JVM, выполняет различные команды для диагностики и управления JVM. Примеры:
jcmd 12345 VM.thread_dump # дамп потоков
jcmd 12345 GC.run # принудительный GC
jcmd 12345 VM.flags # показать флаги JVM
Используется при диагностике и управлении JVM, при работе с продакшн-сервисами.